*QTW 73 - ÉOÉçÅ[ÉoÉãÉÅÉÇÉäÇ…äiî[Ç≥ÇÍÇΩ PICT Ç…ëŒÇ∑ÇÈ PicHandle ÇçÏê¨Ç∑ÇÈ

(96 îN 2 åé 09 ì˙)

Q: åªç›ÅAÉNÉâÉCÉAÉìÉg/ÉTÅ[ÉoÉAÉvÉäÉPÅ[ÉVÉáÉìÇäJî≠ǵǃǢNjÇ∑ÅBÉTÅ[ÉoÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ Macintosh Ç≈ìÆçÏǵÅAÉNÉâÉCÉAÉìÉgÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕ Windows É}ÉVÉìÇégǢNjÇ∑ÅBDZÇÃÇΩÇflÅAÉOÉçÅ[ÉoÉãÉÅÉÇÉäÇ…äiî[Ç≥ÇÍÇΩ PICT Ç…ëŒÇ∑ÇÈ PicHandle ÇçÏê¨Ç∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBǫǧÇ∑ÇÍnjǢǢÇÃÇ≈ǵÇÂǧǩÅB

A: éüÇ…ÅAPicHandle ÇçÏê¨Ç∑ÇÈÇΩÇflÇÃÉTÉìÉvÉãÉRÅ[ÉhÇé¶ÇµÇ‹Ç∑ÅB íçà”:DZÇÃÉRÅ[ÉhÇÕÅAñ{ìñÇà PICT ÇæÇØÇëŒè€Ç…ìÆçÏǵÅAOpenPictureFile/GetPictureFromFile ÇégǡǃÉçÅ[ÉhÇ≈Ç´ÇÈÇ∑Ç◊ǃÇà JPEG/JFIF ÉCÉÅÅ[ÉWÇ≈ÇÕìÆçÏǵNjÇπÇÒÅB


// ---------------------------------------------------------------------
//
// Pict2DIB.c - ÉTÉìÉvÉã QuickTime for Windows ÉAÉvÉäÉPÅ[ÉVÉáÉì
//
// ÉRÉ}ÉìÉhÉâÉCÉìÇ≈éwíËÇ≥ÇÍÇΩ PICT ÉtÉ@ÉCÉãÇ©ÇÁÉOÉçÅ[ÉoÉãÉÅÉÇÉäÇ…
// PICT ÉfÅ[É^Çì«Ç›çûÇ›ÅAPICT Ç…ÉAÉNÉZÉXÇ∑ÇÈÇΩÇflÇà PicHandle Ç
// ÉLÉÉÉXÉgǵǃÅADZÇà PicHandle ÇégǡǃÅADIB Çä‹Çfi .BMP ÉtÉ@ÉCÉã
// ÇçÏê¨Ç∑ÇÈï˚ñ@ÇãÔëÃìIÇ…é¶ÇµÇ‹Ç∑ÅB
//
// dib.h ÇΔ WriteDIB ä÷êîÇÕÅAMicrosoft Visual C++ ÇΔ Microsoft Developer
// Network CD-ROM Ç…ópà”Ç≥ÇÍǃǢNjÇ∑ÅB
//

//  Copyright 1988-1996 Apple Computer, Inc. All Rights Reserved.
//
// ---------------------------------------------------------------------

static char szAppName[] = "Pict2DIB";

#include 
#include 
#include "dib.h"

#define MB_Ret(msg, code)  \
   { MessageBox (NULL, msg, szAppName, MB_OK); return code; }


int PASCAL WinMain (HINSTANCE hInstance,    HINSTANCE hPrevInstance,
                    LPSTR     lpszCmdParam, int       CmdShow)
{
   HFILE       hfile;
   DWORD       lSize;
   HANDLE      hGlobalMem;
   char huge * hpGlobalMem;
   DIBHandle   hdPicture;

   // ÉtÉ@ÉCÉãÇäJǢǃÅAǪÇÃÉTÉCÉYÇåüèoÇ∑ÇÈ
   hfile = _lopen (lpszCmdParam, READ);
   if (hfile==HFILE_ERROR) MB_Ret ("_lopen failure", 0);
   lSize = _llseek (hfile, 0, 2);

   // PICT ÉfÅ[É^Ç…égópÇ∑ÇÈè\ï™Ç»ÉTÉCÉYÇÃÉOÉçÅ[ÉoÉãÉÅÉÇÉäÇäÑÇËìñǃÅA
   // Huge É|ÉCÉìÉ^ÇéÊìæÇ∑ÇÈ
   hGlobalMem  = GlobalAlloc (GPTR, lSize-512);
   hpGlobalMem = (char huge *)GlobalLock (hGlobalMem);

   // ÉtÉ@ÉCÉãÇ©ÇÁÉOÉçÅ[ÉoÉãÉÅÉÇÉäÇ… PICT ÉfÅ[É^Çì«Ç›çûÇ›ÅA
   // ÉtÉ@ÉCÉãÇï¬Ç∂ÇÈ
   _llseek (hfile, 512L, 0);
   _hread  (hfile, hpGlobalMem, lSize-512);
   _lclose (hfile);

   // ÉOÉçÅ[ÉoÉãÉÅÉÇÉäÉnÉìÉhÉãÇÉLÉÉÉXÉgǵǃ PicHandle ÇΔǵǃégópÇ∑ÇÈ
   hdPicture = PictureToDIB ((PicHandle)hGlobalMem);
   WriteDIB ("pictout.bmp", hdPicture);

   // ÉOÉçÅ[ÉoÉãÉÅÉÇÉäÇÃÉçÉbÉNÇâèúǵǃâï˙Ç∑ÇÈ
   GlobalUnlock (hGlobalMem);
   GlobalFree   (hGlobalMem);

   // MessageBox Çï\é¶ÇµÇƒèIóπÇ∑ÇÈ
   MB_Ret (lpszCmdParam, TRUE);
}


[ Technical Q&A's : Graphics & Media : QuickTime : QuickTime for Windows : QTW73 ]